package com.wkq.util

/**
 *
 *@Author: wkq
 *
 *@Time: 2025/7/11 11:00
 *
 *@Desc:
 */
import android.net.Uri
import android.util.Base64
import javax.crypto.Cipher
import javax.crypto.spec.IvParameterSpec
import javax.crypto.spec.SecretKeySpec

object AesDecryptUtil {
    /**
    * Aes解密函数
     */
    fun decrypt(encryptedData: String, key: String, iv: String): String {
        try {
            // 1. URL解码（对应PHP的urldecode）
            val urlDecodedData = Uri.decode(encryptedData)

            // 2. Base64解码（对应PHP的base64_decode）
            val base64DecodedData = Base64.decode(urlDecodedData, Base64.DEFAULT)

            // 3. 创建密钥和IV
            val secretKey = SecretKeySpec(key.toByteArray(Charsets.UTF_8), "AES")
            val ivSpec = IvParameterSpec(iv.toByteArray(Charsets.UTF_8))

            // 4. 初始化Cipher对象（AES-128-CBC）
            val cipher = Cipher.getInstance("AES/CBC/PKCS5Padding")
            cipher.init(Cipher.DECRYPT_MODE, secretKey, ivSpec)

            // 5. 执行解密
            val decryptedBytes = cipher.doFinal(base64DecodedData)

            // 6. 转换为字符串
            return String(decryptedBytes, Charsets.UTF_8)
        } catch (e: Exception) {
            e.printStackTrace()
            return "解密失败: ${e.message}"
        }
    }
}